package com.geo.ai.adapter;

import com.geo.ai.model.AIRequest;
import com.geo.ai.model.AIResponse;
import com.geo.ai.model.ModelConfig;

import java.util.concurrent.CompletableFuture;

/**
 * AI模型适配器接口
 * 定义了所有AI模型适配器必须实现的核心方法
 * 
 * @author GEO Team
 * @version 1.0
 */
public interface AIModelAdapter {
    
    /**
     * 获取适配器名称
     * @return 适配器名称
     */
    String getAdapterName();
    
    /**
     * 获取支持的模型类型
     * @return 模型类型
     */
    String getModelType();
    
    /**
     * 检查适配器是否可用
     * @return 是否可用
     */
    boolean isAvailable();
    
    /**
     * 获取模型配置
     * @return 模型配置
     */
    ModelConfig getModelConfig();
    
    /**
     * 同步调用AI模型
     * @param request AI请求
     * @return AI响应
     */
    AIResponse invoke(AIRequest request);
    
    /**
     * 异步调用AI模型
     * @param request AI请求
     * @return AI响应的Future
     */
    CompletableFuture<AIResponse> invokeAsync(AIRequest request);
    
    /**
     * 流式调用AI模型（用于长文本生成）
     * @param request AI请求
     * @param callback 流式回调接口
     */
    void invokeStream(AIRequest request, StreamCallback callback);
    
    /**
     * 验证API密钥和配置
     * @return 验证结果
     */
    boolean validateConfig();
    
    /**
     * 获取模型使用统计信息
     * @return 使用统计
     */
    ModelUsageStats getUsageStats();
    
    /**
     * 重置使用统计信息
     */
    void resetUsageStats();
}
